Developer Certificate of Origin

Developer Certificate of Origin(DCO)是开放源码项目在接收贡献时使用的一项个人声明机制。贡献者并不是把权利集中转让给项目,而是在每次贡献时确认:自己创作了相关材料、依法取得了提交和修改既有材料的权利,或只是按可追踪的传递链转交他人已经作出同类声明的未修改贡献;同时知悉贡献记录及随附身份信息会作为公开项目记录长期保存。

截至 2026-08-11,官方文本仍是 1.1 版。Linux Foundation 的当前指引把它界定为单向的 certification/affirmation,而不是双方合同,也不是一份独立许可证。DCO 因而主要回答“谁在声明自己有权把这项贡献交给项目,以及它经过了谁”,不能单独回答版权最终归谁、雇主是否授权、代码是否正确安全、第三方材料是否真的兼容,或声明者身份是否已经被独立核验。

四项声明在治理上分别做什么

1.1 版条款 制度作用 仍然没有解决
贡献全部或部分由本人创作,且本人有权按文件所示开源许可证提交 把原创贡献与具名责任人连接 不自动核验真实作者、雇佣作品归属或公司授权
贡献基于既有作品;据本人所知,该作品受适当开源许可证覆盖,且本人有权提交修改版 要求提交者对上游材料及许可链作出判断 “据本人所知”不是完整来源审计,也不保证判断正确
贡献由另一位已作 DCO 声明的人直接提供,自己没有修改 为未修改转交保留一条声明链 不能为缺失的最初权利来源凭空补证
项目、贡献和随附个人信息是公开记录,可长期维护并按项目或相关许可证再分发 让参与者预先知悉公开留痕和长期保存 不等于项目可以忽略所有隐私法、数据最小化或纠错义务

这四项不是四个必须同时满足的权利来源:前三项是替代路径,贡献者无须说明自己具体依赖哪一项;第四项则单独处理公开记录。DCO 的证据价值来自具名声明和可审计传递链,而不是文字本身自动证明事实为真。

它依赖项目许可证,而不是取代项目许可证

DCO 文本把权利基础指向“文件中注明的开源许可证”。Linux Foundation 因此把它放在 开源贡献的 inbound=outbound 模型 中理解:项目通常按对外分发所使用的同一许可证接收贡献,DCO 只补上一项来源与提交权声明。贡献者一般继续持有自己的版权,项目及后续接收者取得的是该开源许可证给予的权利。

这与 Contributor License Agreement 是两种不同的入站治理安排。后者是一份项目与贡献者之间的协议,其实际文本可能授予更广的版权或专利权,也可能规定保证、再许可和项目方义务;有些文件虽被称为 CLA,实质却包含版权转让。判断时必须看具体条款,不能只看名称。

DCO 本身:

这种安排降低了参与门槛,也让贡献者与普通用户原则上获得相同范围的许可;代价是项目日后若想改变许可证,可能仍须处理分散权利人的同意。

Signed-off-by 是声明载体,不是密码学签名

许多项目把姓名和邮箱写入每次提交的 Signed-off-by 记录,以表达该贡献受 DCO 声明约束。Linux Foundation 的指引同时强调,1.1 文本并不强制唯一的技术格式;项目可以为历史贡献、非标准工作流或重新许可活动另行记录声明。

因此,Signed-off-by 的存在最多证明仓库记录中出现了一项声明。自动检查只能确认这行记录是否存在或格式是否符合项目规则,不能判断:

它也不是由私钥产生的密码学签名。密码学签名可以把特定内容与密钥连接,DCO 则记录贡献者对权利来源和公开留痕所作的陈述;两者可以并存,但不能互相替代。

起源、版本与制度扩散

DCO 起源于 2004 年的 Linux 内核社区。SCO 诉讼与 Linux 溯源治理使“代码从哪里来、谁有权传递它”成为高可见度争议,内核维护者随后把个人声明和补丁传递链制度化。Linux Foundation 的当前历史说明把目标概括为两点:明确贡献者之间关于提交权的个人信任,以及留下谁提交、谁传递补丁的文档链。

当前官方文本标为 1.1,版权行列出 2004、2006;Linux Foundation 说明公开记录条款是在 1.1 版加入的。本轮没有找到由官方维护、带不可变版本标记的完整 1.0→1.1 修订档案,因此不把某个二手资料给出的具体改版日期写成已确定事实。

制度随后扩散到 Git、GCC、Linux Foundation 托管项目等不同社区,但“采用 DCO”不表示各项目的身份要求、接收流程或例外完全一致。Git 明确说核心文本来自 Linux 内核,同时提醒具体 sign-off 规则会因项目而异。

一个可核验的近年治理转换是 OpenStack:其 Technical Committee 于 2025-05-20 决定自 2025-07-01 起以 DCO 取代原 CLA,并把降低贡献门槛和行政负担作为理由。这个案例证明项目可以在两种入站安排之间作治理选择;它是 OpenStack 的制度决定,不是 DCO 比 CLA 在所有项目中更有效的实证结果。

Linux Foundation 称几乎所有其托管和支持的项目使用 DCO,但本轮没有找到可审计的全球项目总体、统一识别规则或独立采用率统计。最稳妥的结论是“DCO 被多个大型开放源码项目采用”,而不是给出未经复核的行业占比。

生成式 AI 暴露了声明机制的边界

DCO 要求人能够对贡献来源和提交权作出陈述;它没有为生成式 AI 输出自动建立一条新的权利链。Linux Foundation 的一般政策允许项目接收部分或全部由 AI 工具生成的内容,但要求贡献者检查工具条款、第三方材料、许可与归属,并允许各项目制定更严格规则。

Git 的当前贡献政策则更谨慎:它明确说,大量 AI 生成内容是否能够满足 DCO 仍有法律不确定性,并会拒绝提交者不能理解、不能解释或看似低质量自动生成的贡献。详见 Git 项目的生成式 AI 贡献政策。

两种政策并不等于 DCO 文本发生了变化。它们说明项目仍须在 DCO 之外制定质量、披露和工具使用规则;把人名写入 sign-off 也不能自动消除训练数据、相似输出、第三方权利或作者资格争议。

证据强度与不能推出

已核验

不能推出

相关页面

证据